package com.whenimdrunk.persistencia;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import com.whenimdrunk.entidades.Bloqueados;
import com.whenimdrunk.negocio.PhoneCallReceiver;

import java.util.List;

/**
 * Created by anartz on 23/10/13.
 */
public class BloqueadorHelper extends SQLiteOpenHelper{

// Database Version
    private static final int DATABASE_VERSION = 1;

// Database Name
    private static final String DATABASE_NAME = "whenimdrunkDB";

// Table Names
    private static final String TABLE_BLOQUEADOS= "bloqueados";

// BLOQUEADOS Table - column nmaes
    private static final String KEY_BLOQUEADO = "telefono_id";

//Array de todas las columnas para poder usarlo con el framework Android.
    private static final String[] COLUMNS = {KEY_BLOQUEADO};

// Table Create Statements
// Bloqueados table create statement
    private static final String CREATE_TABLE_BLOQUEADOS = "CREATE TABLE "
            + TABLE_BLOQUEADOS + "(" + KEY_BLOQUEADO + " TEXT PRIMARY KEY)";


    public BloqueadorHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }



    @Override
    public void onCreate(SQLiteDatabase db) {

// creating required tables
        db.execSQL(CREATE_TABLE_BLOQUEADOS);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// on upgrade drop older tables
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_BLOQUEADOS);

// create new tables
        onCreate(db);
    }

    public boolean insertBloqueados(List<Bloqueados> listaBloqueados){

        try{
            // 1. get reference to writable DB
            SQLiteDatabase db = this.getWritableDatabase();

            for(Bloqueados bloq: listaBloqueados){
                // 2. create ContentValues to add key "column"/value
                ContentValues values = new ContentValues();
                values.put(KEY_BLOQUEADO, bloq.getTelefono()); // get telefono
                // 3. insert
                db.insert(TABLE_BLOQUEADOS, // table
                        null, //nullColumnHack
                        values); // key/value -> keys = column names/ values = column values
            }
            // 4. close
            db.close();
            return true;

        }catch(Exception e){
            return false;
        }



    }

    public boolean consultaBloqueado(Bloqueados bloq){

        try{
            // 1. get reference to readable DB
            SQLiteDatabase db = this.getReadableDatabase();

            // 2. build query
            Cursor cursor =
                    db.query(TABLE_BLOQUEADOS, // a. table
                            COLUMNS, // b. column names
                            " telefono_id = ?", // c. selections
                            new String[] { bloq.getTelefono() }, // d. selections args
                            null, // e. group by
                            null, // f. having
                            null, // g. order by
                            null); // h. limit

            // 3. if we got results get the first one
            if (cursor != null){
                cursor.moveToFirst();
                return true;
            }else{
                return false;
            }
        }catch(Exception e){
            return false;
        }
    }

    public boolean getBloqueados(List<Bloqueados> listaBloqueados){

        try{
            // 1. get reference to writable DB
            SQLiteDatabase db = this.getReadableDatabase();

            Cursor cursor =
                    db.query(TABLE_BLOQUEADOS, // a. table
                            COLUMNS, // b. column names
                            null, // c. selections
                            null, // d. selections args
                            null, // e. group by
                            null, // f. having
                            null, // g. order by
                            null); // h. limit

            // 3. if we got results get the first one
            Bloqueados bloq;
            if (cursor.moveToFirst()) {
                do {
                    bloq = new Bloqueados();
                    bloq.setTelefono(cursor.getString(0));
                    // Add bloq to listaBloqueados
                    listaBloqueados.add(bloq);
                } while (cursor.moveToNext());
                return true;
            }else{
                return false;
            }
        }catch(Exception e){
            return false;
        }
    }

    public boolean deleteBloqueados() {

        try{
            // 1. get reference to writable DB
            SQLiteDatabase db = this.getWritableDatabase();

            // 2. delete
            db.delete(TABLE_BLOQUEADOS, //table name
                    null,  // selections
                    null); //selections args

            // 3. close
            db.close();
            return true;
        }catch(Exception e){
            return false;
        }
    }


}